#局域网扫描器，scapy
#导入scapy的所有功能
from scapy.all import *

#首先要选择网卡的接口和网段
# print(show_interfaces())
wifi = 'Realtek RTL8192EU Wireless LAN 802.11n USB 2.0 Network Adapter'
IPSegment = '192.168.31.0/24'

#模拟发包,向整个网络发包，如果有回应，则表示活跃的主机
p = Ether(dst='ff:ff:ff:ff:ff:ff') / ARP(pdst=IPSegment)

#ans表示收到的包的回复
ans, unans = srp(p, iface=wifi, timeout=5)

print("一共扫描到%d台主机：" % len(ans))

#将需要的IP地址和Mac地址存放在result列表中
result = []
for s, r in ans:
    #解析收到的包，提取出需要的IP地址和MAC地址
    result.append([r[ARP].psrc, r[ARP].hwsrc])
#将获取的信息进行排序，看起来更整齐一点
result.sort()

#打印出局域网中的主机
for ip, mac in result:
    print(ip, '------>', mac)
